package org.pb.basic.service;

import org.pb.basic.utils.PageList;

import java.util.List;

/**
 * 服务层接口的公共代码接口
 * @param <T, R> 业务层接口的泛型 —— 对应表的实体类 和 对应查询类
 * @author
 */
public interface IBaseService<T, R> {

    /**
     * 添加一个部门
     * @param condition
     */
    void save(T condition);

    /**
     * 修改一个部门信息
     * @param condition
     */
    void update(T condition);

    /**
     * 根据id删除部门数据
     * @param id
     */
    void remove(Long id);

    /**
     * 获取到所有的部门数据
     * @return
     */
    List<T> findAll();

    /**
     * 根据id获取到部门数据信息
     * @param id
     * @return
     */
    T getById(Long id);

    /**
     * 根据查询条件获取到分页查询结果
     * @param query
     * @return
     */
    PageList<T> findByQuery(R query);

    /**
     * 根据id批量删除数据
     * @param ids  要删除的对应数据的id集合
     */
    void batchRemove(List<Long> ids);

}
